package org.gpf.templateMethod.PCDemo;
/**
 * 造电脑的模板
 * @author gaopengfei
 * @date 2015-5-11 上午11:22:24
 */
public abstract class Template {
	
	protected String pcType;
	
	public Template(String pcType) {
		this.pcType = pcType;
	}
	
	// 留给子类去实现的基本方法
	
	/**
	 * 造CPU
	 */
	protected abstract void makeCPU(String pcType);
	/**
	 * 造主板
	 */
	protected abstract void makeMainBoard(String pcType);
	/**
	 * 造硬盘
	 */
	protected abstract void makeHD(String pcType);
	
	// 父类已经实现好的基本方法
	public void makeOver(String pcType){
		
		System.out.println(pcType + "造好了！");
	}
	
	// 模板方法(给出了顶层的框架)，造电脑，具体方法
	public final void makeComputer(){
		
		makeCPU(pcType);
		makeMainBoard(pcType);
		makeHD(pcType);
		makeOver(pcType);
	}
}
